package Modelo;

import Control.ControlPersonajes;
import javax.swing.ImageIcon;

public class PersonajeDTO {
    // <editor-fold defaultstate="collapsed" desc="Atributos">

    private String Nombre;
    private String Descripcion;
    private String Tipo;
    private double NivelVida;
    private ImageIcon imagen;
    private int FuerzaEstrellas;
    private int ResistenciaEstrellas;
    private int VelocidadEstrellas;
    private int InteligenciaEstrellas;
    private String FuerzaDescripcion;
    private String ResistenciaDescripcion;
    private String VelocidadDescripcion;
    private String InteligenciaDescripcion;
    private double ProbabilidadAtaque;
    private Ataque Ataque1;
    private Ataque Ataque2;
    private Ataque Ataque3;
    private Defensa Defensa1;
    private Defensa Defensa2;
    private Defensa Defensa3;
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Constructores">
    public PersonajeDTO(String Nombre, String Descripcion, String Tipo, double NivelVida, ImageIcon imagen, int FuerzaEstrellas, int ResistenciaEstrellas, int VelocidadEstrellas, int InteligenciaEstrellas, String FuerzaDescripcion, String ResistenciaDescripcion, String VelocidadDescripcion, String InteligenciaDescripcion, double ProbabilidadAtaque, Ataque Ataque1, Ataque Ataque2, Ataque Ataque3, Defensa Defensa1, Defensa Defensa2, Defensa Defensa3) {
        this.Nombre = Nombre;
        this.Descripcion = Descripcion;
        this.Tipo = Tipo;
        this.NivelVida = NivelVida;
        this.imagen = imagen;
        this.FuerzaEstrellas = FuerzaEstrellas;
        this.ResistenciaEstrellas = ResistenciaEstrellas;
        this.VelocidadEstrellas = VelocidadEstrellas;
        this.InteligenciaEstrellas = InteligenciaEstrellas;
        this.FuerzaDescripcion = FuerzaDescripcion;
        this.ResistenciaDescripcion = ResistenciaDescripcion;
        this.VelocidadDescripcion = VelocidadDescripcion;
        this.InteligenciaDescripcion = InteligenciaDescripcion;
        this.ProbabilidadAtaque = ProbabilidadAtaque;
        this.Ataque1 = Ataque1;
        this.Ataque2 = Ataque2;
        this.Ataque3 = Ataque3;
        this.Defensa1 = Defensa1;
        this.Defensa2 = Defensa2;
        this.Defensa3 = Defensa3;
    }

    public PersonajeDTO() {
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Métodos">
    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public String getTipo() {
        return Tipo;
    }

    public void setTipo(String Tipo) {
        this.Tipo = Tipo;
    }

    public String getDescripcion() {
        return Descripcion;
    }

    public void setDescripcion(String Descripcion) {
        this.Descripcion = Descripcion;
    }

    public int getFuerzaEstrellas() {
        return FuerzaEstrellas;
    }

    public void setFuerzaEstrellas(int FuerzaEstreallas) {
        this.FuerzaEstrellas = FuerzaEstreallas;
    }

    public int getResistenciaEstrellas() {
        return ResistenciaEstrellas;
    }

    public void setResistenciaEstrellas(int ResistenciaEstrellas) {
        this.ResistenciaEstrellas = ResistenciaEstrellas;
    }

    public int getVelocidadEstrellas() {
        return VelocidadEstrellas;
    }

    public void setVelocidadEstrellas(int VelocidadEstrellas) {
        this.VelocidadEstrellas = VelocidadEstrellas;
    }

    public int getInteligenciaEstrellas() {
        return InteligenciaEstrellas;
    }

    public void setInteligenciaEstrellas(int InteligenciaEstrellas) {
        this.InteligenciaEstrellas = InteligenciaEstrellas;
    }

    public String getFuerzaDescripcion() {
        return FuerzaDescripcion;
    }

    public void setFuerzaDescripcion(String FuerzaDescripcion) {
        this.FuerzaDescripcion = FuerzaDescripcion;
    }

    public String getResistenciaDescripcion() {
        return ResistenciaDescripcion;
    }

    public void setResistenciaDescripcion(String ResistenciaDescripcion) {
        this.ResistenciaDescripcion = ResistenciaDescripcion;
    }

    public String getVelocidadDescripcion() {
        return VelocidadDescripcion;
    }

    public void setVelocidadDescripcion(String VelocidadDescripcion) {
        this.VelocidadDescripcion = VelocidadDescripcion;
    }

    public String getInteligenciaDescripcion() {
        return InteligenciaDescripcion;
    }

    public void setInteligenciaDescripcion(String InteligenciaDescripcion) {
        this.InteligenciaDescripcion = InteligenciaDescripcion;
    }

    public double getProbabilidadAtaque() {
        return ProbabilidadAtaque;
    }

    public void setProbabilidadAtaque(double ProbabilidadAtaque) {
        this.ProbabilidadAtaque = ProbabilidadAtaque;
    }

    public Ataque getAtaque1() {
        return Ataque1;
    }

    public void setAtaque1(Ataque Ataque1) {
        this.Ataque1 = Ataque1;
    }

    public Ataque getAtaque2() {
        return Ataque2;
    }

    public void setAtaque2(Ataque Ataque2) {
        this.Ataque2 = Ataque2;
    }

    public Ataque getAtaque3() {
        return Ataque3;
    }

    public void setAtaque3(Ataque Ataque3) {
        this.Ataque3 = Ataque3;
    }

    public Defensa getDefensa1() {
        return Defensa1;
    }

    public void setDefensa1(Defensa Defensa1) {
        this.Defensa1 = Defensa1;
    }

    public Defensa getDefensa2() {
        return Defensa2;
    }

    public void setDefensa2(Defensa Defensa2) {
        this.Defensa2 = Defensa2;
    }

    public Defensa getDefensa3() {
        return Defensa3;
    }

    public void setDefensa3(Defensa Defensa3) {
        this.Defensa3 = Defensa3;
    }

    public ImageIcon getImagen() {
        return imagen;
    }

    public void setImagen(ImageIcon imagen) {
        this.imagen = imagen;
    }

    public double getNivelVida() {
        return NivelVida;
    }

    public void setNivelVida(double NivelVida) {
        this.NivelVida = NivelVida;
    }

    @Override
    public String toString() {
        return "PersonajeDTO{" + "Nombre=" + Nombre + ", Descripcion=" + Descripcion + ", Tipo=" + Tipo + ", NivelVida=" + NivelVida + ", imagen=" + imagen + ", FuerzaEstrellas=" + FuerzaEstrellas + ", ResistenciaEstrellas=" + ResistenciaEstrellas + ", VelocidadEstrellas=" + VelocidadEstrellas + ", InteligenciaEstrellas=" + InteligenciaEstrellas + ", FuerzaDescripcion=" + FuerzaDescripcion + ", ResistenciaDescripcion=" + ResistenciaDescripcion + ", VelocidadDescripcion=" + VelocidadDescripcion + ", InteligenciaDescripcion=" + InteligenciaDescripcion + ", ProbabilidadAtaque=" + ProbabilidadAtaque + ", Ataque1=" + Ataque1 + ", Ataque2=" + Ataque2 + ", Ataque3=" + Ataque3 + ", Defensa1=" + Defensa1 + ", Defensa2=" + Defensa2 + ", Defensa3=" + Defensa3 + '}';
    }

    public Ataque eligeAtaque(){
        return ControlPersonajes.aleatorio(1, 100) <= this.ProbabilidadAtaque * 100? escogerAtaque() : null;
    } 
    
    private Ataque escogerAtaque() {
        int p1 = (int) (Ataque1.ProbabilidadAcierto * 100);
        int p2 = ((int) (Ataque2.ProbabilidadAcierto * 100)) + p1;

        int numero = ControlPersonajes.aleatorio(1, 100);
        return (numero <= p1) ? Ataque1 : (numero <= p2) ? Ataque2 : Ataque3;
    }

    public Defensa escogerDefensa() {
        int p1 = (int) (Defensa1.ProbabilidadAcierto * 100);
        int p2 = ((int) (Defensa2.ProbabilidadAcierto * 100)) + p1;

        int numero = ControlPersonajes.aleatorio(1, 100);
        return (numero <= p1) ? Defensa1 : (numero <= p2) ? Defensa2 : Defensa3;
    }
    // </editor-fold>
}
